『新装版 リファクタリング 既存のコードを安全に改善する』
https://images-na.ssl-images-amazon.com/images/I/71SE4R7l1AL.jpg
ピアソンショックでピアソン・エデュケーションから出ていた最初の翻訳版と訳者陣は変わっていないが、翻訳はかなり刷新されているとのこと。 技法の列挙は、始まりにすぎません。それは、通り抜けなければならない関門です。技法なしには、実際に動くプログラムの設計を行えません。技法があってもできないことには変わりませんが、少なくとも出発はできます。
こうしたすべてのすばらしい技法が、なぜ始まりにすぎないのでしょうか。その理由は、これらを使うべきとき、使うべきでないとき、始めるべきとき、やめるべきとき、進むべきとき、待つべきときを、皆さんはまだご存知ないからです。リファクタリングに寄与するのはリズムであって、個々の音符ではないのです。
それを実際に体得したと実感するのはどんなときでしょうか。それは、皆さんが諦観 (calm down)を身につけ始めたときでしょう。それは、誰かの書いたコードがどんなにぐちゃぐちゃでも、それを改善し、進化し続けるようにできるという、絶対的な自信を感じるようになるときです。
目次
日本語版の再出版にあたって
謝辞
本書に寄せて
はじめに
リファクタリングとは
本書の内容
本書の対象となる読者
先人の礎の上に
謝辞
第1章 リファクタリング最初の例
スタート地点
リファクタリングの第一歩
statement メソッドの分割、再配置
まとめ
第2章 リファクタリングの原則
リファクタリングの定義
リファクタリングを行う理由
いつリファクタリングをすべきか
管理者を説得するには
リファクタリングの問題点
リファクタリングと設計
リファクタリングとパフォーマンス
リファクタリングの起源
重複したコード
長すぎるメソッド
巨大なクラス
長すぎるパラメータリスト
変更の偏り
変更の分散
特性の横恋慕
データの群れ
基本データ型への執着
スイッチ文
パラレル継承
怠け者クラス
疑わしき一般化
一時的属性
メッセージの連鎖
仲介人
不適切な関係
クラスのインタフェース不一致
未熟なクラスライブラリ
データクラス
相続拒否
コメント
第4章 テストの構築
自己テストコードの意義
テストの追加
第5章 リファクタリング・カタログに向けて
リファクタリングの形式
参照の検索
本書のリファクタリングの成熟度
第6章 メソッドの構成
メソッドの抽出
メソッドのインライン化
一時変数のインライン化
問い合せによる一時変数の置き換え
一時変数の分離
パラメータへの代入の除去
メソッドオブジェクトによるメソッドの置き換え
アルゴリズムの取り替え
第7章 オブジェクト間での特性の移動
メソッドの移動
フィールドの移動
クラスの抽出
クラスのインライン化
仲介人の除去
外部メソッドの導入
局所的拡張の導入
第8章 データの再編成
オブジェクトによるデータ値の置き換え
値から参照への変更
参照から値への変更
オブジェクトによる配列の置き換え
観察されるデータの複製
単方向関連の双方向への変更
双方向関連の単方向への変更
シンボリック定数によるマジックナンバーの置き換え
フィールドのカプセル化
コレクションのカプセル化
データクラスによるレコードの置き換え
クラスによるタイプコードの置き換え
サブクラスによるタイプコードの置き換え
State/Strategy によるタイプコードの置き換え
フィールドによるサブクラスの置き換え
第9章 条件記述の単純化
条件記述の分解
条件記述の統合
重複した条件記述の断片の統合
制御フラグの削除
ガード節による入れ子条件記述の置き換え
ポリモーフィズムによる条件記述の置き換え
表明の導入
第10章 メソッド呼び出しの単純化
メソッド名の変更
パラメータの追加
パラメータの削除
問い合せと更新の分離
メソッドのパラメタライズ
明示的なメソッド群によるパラメータの置き換え
オブジェクトそのものの受け渡し
メソッドによるパラメータの置き換え
パラメータオブジェクトの導入
set メソッドの削除
メソッドの隠蔽
Factory Method によるコンストラクタの置き換え
ダウンキャストのカプセル化
例外によるエラーコードの置き換え
条件判定による例外の置き換え
フィールドの引き上げ
メソッドの引き上げ
コンストラクタ本体の引き上げ
メソッドの引き下げ
フィールドの引き下げ
サブクラスの抽出
スーパークラスの抽出
インタフェースの抽出
階層の平坦化
Template Method の形成
委譲による継承の置き換え
継承による委譲の置き換え
第12章 大きなリファクタリング
継承の切り離し
手続き的な設計からオブジェクト指向への変換
プレゼンテーションとドメインの分離
階層の抽出
第13章 リファクタリング、再利用、現実
現実の壁
開発者が自分たちのプログラムをリファクタリングしようと思わない理由
現実の壁(再び)
リファクタリングのリソースと参考文献
ソフトウェア再利用および技術移転に与える影響
最後に
参考文献
第14章 リファクタリングツール
ツールを用いたリファクタリング
リファクタリングツールの技術的規範
リファクタリングツールの実践的規範
まとめ
付録 Java のバージョンアップに伴うリファクタリングをめぐる環境の変化
Java の進歩
テスティングフレームワークの進歩
Java 7 で本書コードを再びリファクタリングする
参考文献
リファクタリングのヒント
訳者あとがき
索引
hr.icon
プログラミングを始めてから1,2年くらいの時期に読んで衝撃を受けた書籍。 koma.icon